/*
给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。

假设环境不允许存储 64 位整数（有符号或无符号）。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/

// 时间复杂度：翻转的次数即 xx 十进制的位数。
// 标准公式 res = res * 10 + x %10; x = x /10 ;
class Solution {
    public int reverse(int x) {
       int res = 0;
       while(x != 0){
           //因为x本身会被int限制，当x为正数并且位数和 Integer.MAX_VALUE 的位数 相等时 "首位最大只能为2"
           //所以逆转后不会出现res = Integer.MAX_VALUE / 10 && tmp > 2的情况，自然也不需要判断res == 214748364 && tmp > 7了，反之负数情况也一样
           if(res > Integer.MAX_VALUE /10 || res < Integer.MIN_VALUE /10){
                return 0;
           }
            res = res * 10 + x % 10;
            x = x /10;
       }
       return res;
    }
}